package org.smartercontext.contextmger.fixedgatherers;

import java.util.ArrayList;

import org.json.JSONObject;

/**
 * This interface allows get the user's information from Social Networks
 * @author JuanPablo
 * @creation_date 06 Mar 2014
 * @version 1.0
 */
public interface ISocialGatherer {

	/**
	 * This method allows get the friend list based on an specific URL and 
	 * auth token
	 * @param token - The string with the authorization for the query
	 * @return a JSON with the results
	 */
	public String getFriendList(String token);
	
	/** 
	 * This method allows get the education list based on an specific URL and 
	 * auth token
	 * @param token - The string with the authorization for the query
	 * @return a JSON with the results
	 */
	public String getEducationList (String token);
	
	/**
	 * This method allows get the sports list based on an specific URL and 
	 * auth token
	 * @param token - The string with the authorization for the query
	 * @return a JSON with the results
	 */
	public String getSportsList (String token);
	
	/**
	 * This method allows get the work list based on an specific URL and 
	 * auth token
	 * @param token - The string with the authorization for the query
	 * @return a JSON with the results
	 */
	public String getWorkList (String token);
	
	/**
	 * This method allows get the family members list based on an specific URL and 
	 * auth token
	 * @param token - The string with the authorization for the query
	 * @return a JSON with the results
	 */
	public String getFamilyList (String token);
	
	/**
	 * This method allows get the movies list based on an specific URL and 
	 * auth token
	 * @param token - The string with the authorization for the query
	 * @return a JSON with the results
	 */
	public String getMoviesList (String token);
	
	/**
	 * This method allows get the music list based on an specific URL and 
	 * auth token
	 * @param token - The string with the authorization for the query
	 * @return a JSON with the results
	 */
	public String getMusicList (String token);
	
	/**
	 * This method allows get the likes list based on an specific URL and 
	 * auth token
	 * @param token - The string with the authorization for the query
	 * @return a JSON with the results
	 */
	public String getBooksList (String token);
	
	/**
	 * This method allows get the user's basic information based on an specific URL and 
	 * auth token
	 * @param token - The string with the authorization for the query
	 * @return a JSON with the results
	 */
	public String getBasicInformaction (String token);
	
	public String getSignificantOther (String token);
	
	public void updateBasicInformation(JSONObject basicInf)throws Exception;
	public void updateSignificantOther(JSONObject signifInf)throws Exception;
	
	public void updateStudyInforrmatin(JSONObject studiesInf)throws Exception;
	public void updateWorkInformation(JSONObject workInf)throws Exception;
	
	public void updateFamiliInformation(JSONObject familyInf)throws Exception;
	public void updateFriendsInformation(JSONObject friendsInf)throws Exception;
	
	public void updateMusicInformation(JSONObject musicInf)throws Exception;
	public void updateMoviesInformation(JSONObject moviesInf)throws Exception;
	
	public void updateBooksInformation (JSONObject booksInf)throws Exception;
	
	public ArrayList<ArrayList<Object>> getListaPreferencias();
	public void setListaPreferencias(ArrayList<ArrayList<Object>> listaPreferencias);
	public String getFacebookId();
	public void setFacebookId(String facebookId);
	public String getGenre();
	public void setGenre(String genre);
	public String getBirthday();
	public void setBirthday(String birthday);
	public String getRelationShipStatus();
	public void setRelationShipStatus(String relationShipStatus);
	public String getSignificantOther() ;
	public void setSignificantOther(String significantOther);
}
